//
//  MainViewController.swift
//  sinaWeibo
//
//  Created by 浅爱 on 16/3/9.
//  Copyright © 2016年 y. All rights reserved.
//

import UIKit

class MainViewController: UITabBarController {
    
    
    // 跳转页面的方法和外界调用的方法，最好放在最前面
    /*
        1.按钮的点击事件是由运行循环监听并且以消息机制传递的
        2.swift为了追求性能(静态类型的语言)决定了其在编译时期就已经决定好了某个事件该如何调用
        3.使用了private修饰的方法在运行的时候对于运行循环是不可见的，所以会提示找不到xxx方法
        4.可以使用@objc修饰私有方法，其目的是在于 告诉系统此方法使用OC基于运行时的机制(KVC动态派发消息)来执行方法
    */
    @objc private func plusBtnClick() {
    
        print(__FUNCTION__)
    
    }
    
    override func viewDidLoad() {
        
        super.viewDidLoad()
        
        let mainTabBar = MainTabBar()
        
        mainTabBar.plusBtn.addTarget(self, action: "plusBtnClick", forControlEvents: .TouchUpInside)
        
        // kvc访问只读属性
        // 系统的tabBar是只读属性，不能直接操作
        setValue(mainTabBar, forKey: "tabBar")
        // 添加所有子视图控制器
        addChildViewControllers()
        
    }
    
    
    // MARK: 添加子控制器
    private func addChildViewControllers() {
        
        addChildViewController(HomeTableViewController(), title: "首页", imageName: "tabbar_home")
        
        addChildViewController(MessageTableViewController(), title: "消息", imageName: "tabbar_message_center")
        
        addChildViewController(DiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        
        addChildViewController(ProfileTableViewController(), title: "我", imageName: "tabbar_profile")
        
        
    }
    
    
    // MARK: 添加子控制器的方法
    private func addChildViewController(vc: UIViewController, title: String, imageName: String) {
        
        // 设置title
        vc.title = title
        
        vc.tabBarItem.title = title
        
        // 设置字体颜色
        tabBar.tintColor = UIColor.orangeColor()
        
        
        // 设置图片
        vc.tabBarItem.image = UIImage(named: imageName)
        
        // 设置选中图片
        vc.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")//?.imageWithRenderingMode(.AlwaysOriginal)
        
        
        let nav = UINavigationController(rootViewController: vc)
        
        addChildViewController(nav)
        
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
    /*
    // MARK: - Navigation
    
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    }
    */
    
}
